package com.mmg.spzx.common.feign;

import feign.RequestInterceptor;
import feign.RequestTemplate;
import jakarta.servlet.http.HttpServletRequest;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;

/**
 * 定义feign拦截器，用于在feign调用之前，将token信息存入header中
 * 2023/11/20：bug5
 * 如果在LogAspect.class类上加上@Component注解进行注册标注，那么该类会被自动注册到Spring容器中，无需再使用@Import注解导入。
 * @Component注解是Spring框架提供的通用的组件扫描和注册注解，用于将一个类声明为Spring容器的组件。当一个类被@Component注解标记后，Spring会自动扫描并将其实例化并加入到容器中。
 * 因此，如果在LogAspect.class上添加了@Component注解，Spring会自动将其作为一个组件进行注册，不需要额外使用@Import注解来导入。
 */
public class UserTokenFeignInterceptor implements RequestInterceptor {
    @Override
    public void apply(RequestTemplate requestTemplate) {
        ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
        HttpServletRequest request = requestAttributes.getRequest();
        String token = request.getHeader("token");
        requestTemplate.header("token", token);
    }
}
